#include<conio.h>
#include<stdio.h>
#define maxn 100005
typedef struct connect{
    long u,v,type,id;
};
connect arr[1000006];
long Lab[maxn][2],count=0;
long n,m,success;
void input(){
    long i,u,v,t;
    FILE *fp=fopen("NREDUCE.INP","r");
    fscanf(fp,"%ld%ld",&n,&m);
    for(i=1;i<=m;i++){
        fscanf(fp,"%ld%ld%ld",&u,&v,&t);
        arr[i].u=u;
        arr[i].v=v;
        arr[i].type=t;
    }
    fclose(fp);
}
void init(){
    int i;
    for(i=1;i<=n;i++){
        Lab[i][0]=Lab[i][1]=-1;
    }
}
long getRoot(long r,int id){
    while(Lab[r][id]>0)
        r=Lab[r][id];
    return r;
}
long Union(long r1,long r2,int id){
    long x;
    x=Lab[r1][id]+Lab[r2][id];
    if(Lab[r1][id]>Lab[r2][id]){
        Lab[r1][id]=r2;
        Lab[r2][id]=x;
    }else{
        Lab[r2][id]=r1;
        Lab[r1][id]=x;
    }
    return -x;
} 
void process(){
    long i,j,u,v,sodinh;
    for(i=1;i<=m;i++){
        if(arr[i].type!=3)continue;
        u=getRoot(arr[i].u,0);
        v=getRoot(arr[i].v,0);
        if(u!=v){
            sodinh=Union(u,v,0);
            arr[i].type=0;
        }else count++;
    }
    if(sodinh==n){
        success=1;
        return;
    }
    for(j=1;j<=n;j++)Lab[j][1]=Lab[j][0];//Saved
    for(i=1;i<=m;i++){
        if(arr[i].type!=2)continue;
        u=getRoot(arr[i].u,0);
        v=getRoot(arr[i].v,0);
        if(u!=v){
            sodinh=Union(u,v,0);
            arr[i].type=0;
        }else count++;
    }
    if(sodinh!=n){
        success=0;
        return;
    }
    for(i=1;i<=m;i++){
        if(arr[i].type!=1)continue;
        u=getRoot(arr[i].u,1);
        v=getRoot(arr[i].v,1);
        if(u!=v){
            sodinh=Union(u,v,1);
            arr[i].type=0;
        }else count++;
    }
    if(sodinh==n) success=1;
    else success=0;
}
void output(){
    FILE *fp=fopen("NREDUCE.OUT","w");
    if(success){
        fprintf(fp,"%ld",count);
        for(long i=1;i<=m;i++)
            if(arr[i].type!=0)fprintf(fp,"\n%ld",i);
    }else fprintf(fp,"-1");
    fclose(fp);
}
int main(){
    input();
    init();
    process();
    output();
    return 0;
}
